function calling
OpenAIの Chat Completion API(gpt-4-0613, gtp-3.5-turbo-0613) 利用において、 ユーザーが入力した返信に、自分が予め定義しておいた関数が使えそうな場合は、その関数の利用ができるパラメータと合わせて返信する。
ChatGPT SlackbotでSlack検索をするFunction Callingの威力がヤバすぎる...。これはすごい発明をしてしまったかもしれない...。ChatGPTに適切なクエリを考えさせるのがめちゃくちゃ強力。なおFUNCTIONSの定義はこんな感じ。
「Toolformer的なアプローチ」の進化系
ある汎用タスクの確認をおこなう際に、サブタスクの確認と登録をチャットにやってもらうというユースケースを想定してみます。
関数を呼び出す関数をfunction callingに渡す
parameters -> properties で、operationsという引数の配列で入れ子を作ってる? その要素のoperationは itemsで、nameでenumが複数から選択。
code:function_calling.json
{
"name": "todo_processor",
"description": "It processes the series of operations on the todo list",
"parameters": {
"type": "object",
"properties": {
"operations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the operation",
},
"args": {
"type": "string",
"description": "Arguments of the operation"
}
}
},
"description": "It contains the operation to be performed on the todo list"
}
}
}
}
で、chat completion apiが必要と判断したときに、contentはnullになり、代わりにfunction_callが返される。
上記の例では、関数の再帰的な形?の値が変える。nameとarguments,
単純な例で音声対話エージェントを作ってみたのですが、functionsの中身は動的に変えることができるのでもっと色々なことができるのではないかな?という気がしています。